package main

import (
	"bufio"
	"fmt"
	"io"
	"io/ioutil"
	"os"
)

// 打开读文件方式1
func read1() {
	fileobj, err := os.Open("./main.go")
	if err != nil {
		fmt.Printf("错误信息：%v", err)
	}
	defer fileobj.Close() //关闭文件
	//读文件
	var tmp [128]byte
	for {
		n, err := fileobj.Read(tmp[:])
		if err == io.EOF {
			return
		}
		if err != nil {
			fmt.Printf("错误信息：%v", err)
		}
		fmt.Printf("读了4个字节：%v", n)
		//fmt.Println(string(tmp[:]))
		fmt.Println(string(tmp[:n]))
		if n < 128 {
			return
		}
	}
}

//利用bufio 一行一行读2
func readFromByBufio() {
	fileobj, err := os.Open("./main.go")
	if err != nil {
		fmt.Printf("错误信息：%v", err)
		return
	}
	defer fileobj.Close() //关闭文件
	reader := bufio.NewReader(fileobj)
	for {
		n, err := reader.ReadString('\n')
		if err == io.EOF {
			return
		}
		if err != nil {
			fmt.Printf("错误信息：%v", err)
		}
		fmt.Print(n)
	}
}

// readFromFileByioutuil 3
func readFromFileByioutuil() {
	ret, err := ioutil.ReadFile("./main.go")
	if err != nil {
		fmt.Printf("错误信息：%v", err)
		return
	}
	fmt.Println(string(ret))
}

func main() {
	fmt.Println("文件打开读出")
	readFromFileByioutuil()

}
